#ifndef _EngineRenderSystem_h_
#define _EngineRenderSystem_h_

#include "BlazeEngineConfig.h"

#include "BlazeEngineCommon.h"
#include "BlazeEngineColor.h"
#include "BlazeEngineTexture.h"
#include "BlazeEngineBaseSystem.h"

class _BlazeExports BeRenderSystem : public BeBaseSystem
{
public:

	BeRenderSystem();
	virtual ~BeRenderSystem();


	virtual bool InstallRenderWindow(int iWindowHandle, const char* pcTilte = NULL) = 0;
	virtual void UninstallRenderWindow() = 0;

	virtual bool Install() = 0;
	virtual void Uninstall() = 0;
	virtual void MessageLoop() = 0;

	virtual void SetActive(bool bActive) = 0;
	virtual void SetFullscreen(bool bFullscreen) = 0;
	virtual void SetBits(int iBits) = 0;
	virtual void SetWindowLeft(int iLeft) = 0;
	virtual void SetWindowTop(int iTop) = 0;
	virtual void SetWindowWidth(int iWidth) = 0;
	virtual void SetWindowHeight(int iHeight) = 0;

	virtual bool IsActive() = 0;
	virtual bool IsFullscreen() = 0;
	virtual int GetBits() = 0;
	virtual int GetWindowHandle() = 0;
	virtual int GetWindowLeft() = 0;
	virtual int GetWindowTop() = 0;
	virtual int GetWindowWidth() = 0;
	virtual int GetWindowHeight() = 0;

	virtual bool BeginRender(BeColor Color, bool bZBuffer = true) = 0;
	virtual bool EndRender() = 0;

	virtual void SetFog(FogType Type, BeColor Color, float fDensity, float fStart, float fEnd) = 0;
	virtual void SetTexture(unsigned int uiUnit, BeTexture* pTexture) = 0;

protected:

	bool m_bActive;
	bool m_bFullscreen;
	bool m_bVsync;

	int m_iBits;
	int m_iHandle;
	int m_iLeft;
	int m_iTop;
	int m_iWidth;
	int m_iHeight;

};

#endif
